package com.projet.segmiMap.model;

import android.graphics.Color;
import android.util.Log;
import com.projet.segmiMap.R;
import com.google.android.gms.maps.model.*;

import java.util.HashSet;
import java.util.Set;

/**
 * Created with IntelliJ IDEA.
 * User: Julien
 * Date: 03/12/13
 * Time: 22:01
 */
public class Lieu {
    /**
     * Constantes Typage Lieu
     */
    private static int nb = 0;
    private static final BitmapDescriptor ROOM = BitmapDescriptorFactory.fromResource(R.raw.icon_course);
    private static final int ROOMCOLOR = Color.BLUE;
    private static final BitmapDescriptor STAIRS = BitmapDescriptorFactory.fromResource(R.raw.icon_stairs);
    private static final int STAIRSCOLOR = Color.BLACK;
    private static final BitmapDescriptor ELEVATOR = BitmapDescriptorFactory.fromResource(R.raw.icon_elevator);
    private static final int ELEVATORCOLOR = Color.RED;
    private static final BitmapDescriptor FOOD = BitmapDescriptorFactory.fromResource(R.raw.icon_food);
    private static final int FOODCOLOR = Color.MAGENTA;
    private static final BitmapDescriptor ADMINISTRATION = BitmapDescriptorFactory.fromResource(R.raw.icon_administration);
    private static final int ADMINISTRATIONCOLOR = Color.GRAY;
    private static final BitmapDescriptor INTEREST = BitmapDescriptorFactory.fromResource(R.raw.icon_information);
    private static final int INTERESTCOLOR = Color.YELLOW;
    private static final BitmapDescriptor WC = BitmapDescriptorFactory.fromResource(R.raw.icon_wc);
    private static final int WCCOLOR = Color.CYAN;
    /**
     * Fin Constantes Typage Lieu
     */


    private String nom;
    private int etage;
    private PolygonOptions coordonnees = new PolygonOptions();
    private MarkerOptions marqueur = new MarkerOptions();
    private Marker marker;
    private char type;

    public Lieu(int etage, PolygonOptions coordonnees, MarkerOptions marqueur) {
        this.coordonnees = coordonnees;
        this.marqueur = marqueur;
        setTypeLieu(marqueur.getTitle());
        this.etage = etage;

    }

    public String getNom() {
        return nom;
    }

    public int getEtage() {
        return etage;
    }

    public PolygonOptions getCoordonnees() {
        return coordonnees;
    }

    public MarkerOptions getMarqueur() {
        return marqueur;
    }

    public Marker getMarker() {
        return marker;
    }

    public void setMarker(Marker marker) {
        this.marker = marker;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Lieu)) return false;

        Lieu lieu = (Lieu) o;

        if (etage != lieu.etage) return false;
        if (!coordonnees.equals(lieu.coordonnees)) return false;
        if (!nom.equals(lieu.nom)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = nom.hashCode();
        result = 31 * result + etage;
        result = 31 * result + coordonnees.hashCode();
        return result;
    }

    /**
     * Cette fonction sert définir l'icone du lieu en focntion de son préfixage
     *
     * @param name Le nom du marqueur à traiter
     */
    private void setTypeLieu(String name) {
        nb++;
        String[] nom = name.split("/");
        Log.v("autocompl",nom[1]);
        marqueur.title(nom[1]);
        this.nom = nom[1];
        type = nom[0].charAt(0);
        switch (type) {
            case 'A':
                marqueur.icon(ADMINISTRATION);
                //coordonnees.fillColor(ADMINISTRATIONCOLOR);
                break;
            case 'R':
                marqueur.icon(ROOM);
                //coordonnees.fillColor(ROOMCOLOR);
                break;
            case 'S':
                marqueur.icon(STAIRS);
                //coordonnees.fillColor(STAIRSCOLOR);
                break;
            case 'E':
                marqueur.icon(ELEVATOR);
                //coordonnees.fillColor(ELEVATORCOLOR);
                break;
            case 'W':
                marqueur.icon(WC);
                //coordonnees.fillColor(WCCOLOR);
                break;
            case 'F':
                marqueur.icon(FOOD);
                //coordonnees.fillColor(FOODCOLOR);
                break;
            case 'I':
                marqueur.icon(INTEREST);
                //coordonnees.fillColor(INTERESTCOLOR);
                break;
            default:
                break;
        }
        int choix = nb % 6;
        switch (choix) {
            case 0:
                coordonnees.fillColor(Color.BLUE);
                break;
            case 1:
                coordonnees.fillColor(Color.GREEN);
                break;
            case 2:
                coordonnees.fillColor(Color.CYAN);
                break;
            case 3:
                coordonnees.fillColor(Color.LTGRAY);
                break;
            case 4:
                coordonnees.fillColor(Color.YELLOW);
                break;
            case 5:
                coordonnees.fillColor(Color.RED);
                break;
            case 6:
                coordonnees.fillColor(Color.GRAY);
                break;
            default:
                coordonnees.fillColor(Color.DKGRAY);
        }
    }
}
